package com.xbongbong.paas.service.dynamic.crm.strategy;

import com.xbongbong.pro.dynamic.pojo.dto.DynamicBackAndExitTeamDTO;
import com.xbongbong.pro.dynamic.pojo.dto.DynamicBackDTO;
import com.xbongbong.pro.dynamic.pojo.dto.DynamicDistributeDTO;
import com.xbongbong.pro.dynamic.pojo.dto.DynamicGrapDTO;
import com.xbongbong.pro.dynamic.pojo.dto.DynamicMergeDTO;
import com.xbongbong.pro.dynamic.pojo.dto.DynamicRestoreDTO;

import java.util.List;

public interface CustomerDynamicStrategy {

    /**
     * 业务类型
     * @return
     */
    List<Integer> type();

    /**
     * 捞取
     * @param dynamicGrapDTO
     */
    void grap(DynamicGrapDTO dynamicGrapDTO);

    /**
     * 退回公海池
     * @param dynamicBackDTO
     */
    void back(DynamicBackDTO dynamicBackDTO);


    /**
     * 手动退出公海池并且退出负责团队
     * @param dynamicBackAndExitTeamDTO
     */
    void backAndExitTeam(DynamicBackAndExitTeamDTO dynamicBackAndExitTeamDTO);

    /**
     * 公海池规则退出公海池并且退出负责团队
     * @param dynamicBackAndExitTeamDTO
     */
    void scriptBackAndExitTeam(DynamicBackAndExitTeamDTO dynamicBackAndExitTeamDTO);

    /**
     * 离职退出公海池并且退出负责团队
     * @param dynamicBackAndExitTeamDTO
     */
    void leaveBackAndExitTeam(DynamicBackAndExitTeamDTO dynamicBackAndExitTeamDTO);

    /**
     * 还原
     * @param dynamicRestoreDTO
     */
    void restore(DynamicRestoreDTO dynamicRestoreDTO);

    /**
     * 合并
     * @param dynamicMergeDTO
     */
    void merge(DynamicMergeDTO dynamicMergeDTO);

    /**
     * 分配
     * @param dynamicDistributeDTO
     */
    void distribute(DynamicDistributeDTO dynamicDistributeDTO);

}
